//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop

#include "SenhaTab.h"
#include "Senhas.h"
#include "DModule.h"
#include "stdm.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "DialPad"
#pragma link "PHDS"
#pragma link "DIALPAD"
#pragma resource "*.dfm"
TCPSenhasTabelas *CPSenhasTabelas;
//---------------------------------------------------------------------------
__fastcall TCPSenhasTabelas::TCPSenhasTabelas(TComponent* Owner)
        : TDiPad(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TCPSenhasTabelas::CarregaListBox(void)
{
    ListBox1->Items->Clear();
    ListBox1->Sorted=true;
    for(int a=0;a<SenUtil.TabelasPermissao->Count;a++)
     {
      if(SenUtil.TabelasPermissao->Strings[a].UpperCase()=="TBSENHAS")
       continue;
      ORDSENTAB *O=new ORDSENTAB;
      O->Pos=a;
      ListBox1->Items->AddObject(dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[a])->Titulo,O);
     }
    ::SetFocus(ListBox1->Handle);
    AtualizaGrupo();
}
//---------------------------------------------------------------------------
void __fastcall TCPSenhasTabelas::FormShow(TObject *Sender)
{
    Atualizando=false;
    Alterou=false;
    CarregaListBox();
    ::SetFocus(ListBox1->Handle);

    // Chama evento da Antecestora
    TDiPad::FormShow(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TCPSenhasTabelas::BitBtn1Click(TObject *Sender)
{
    if(CPSenhas->PHDS1->State!=phInsert)
     CPSenhas->PHDS1->Edit();
    Alterou=true;
    TCursor SCursor=Screen->Cursor;
    Screen->Cursor=crHourGlass;
    try
     {
      for(int a=0;a<SenUtil.TabelasPermissao->Count;a++)
       {
        dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[a])->Incluir=true;
        dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[a])->Alterar=true;
        dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[a])->Eliminar=true;
       }
      CPSenhas->SEN->Menus[0][7]=1;
      AtualizaGrupo();
     }
    __finally
     {
      Screen->Cursor=SCursor;
     }
}
//---------------------------------------------------------------------------
void __fastcall TCPSenhasTabelas::BitBtn2Click(TObject *Sender)
{
    if(CPSenhas->PHDS1->State!=phInsert)
     CPSenhas->PHDS1->Edit();
    Alterou=true;
    TCursor SCursor=Screen->Cursor;
    Screen->Cursor=crHourGlass;
    try
     {
      for(int a=0;a<SenUtil.TabelasPermissao->Count;a++)
       {
        dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[a])->Incluir=false;
        dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[a])->Alterar=false;
        dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[a])->Eliminar=false;
       }
      CPSenhas->SEN->Menus[0][7]=0;
      AtualizaGrupo();
     }
    __finally
     {
      Screen->Cursor=SCursor;
     }
}
//---------------------------------------------------------------------------
void __fastcall TCPSenhasTabelas::AtualizaGrupo(void)
{
    Atualizando=true;
    try
     {
      if(ListBox1->ItemIndex==-1)
       {
        CheckBox1->Checked=false;
        CheckBox2->Checked=false;
        CheckBox3->Checked=false;
        GroupBox1->Enabled=false;
        GroupBox1->Visible=false;
       }
      else
       {
        GroupBox1->Enabled=true;
        GroupBox1->Visible=true;
        int Pos=dynamic_cast<ORDSENTAB*>(ListBox1->Items->Objects[ListBox1->ItemIndex])->Pos;
        CheckBox1->Checked=dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[Pos])->Incluir;
        CheckBox2->Checked=dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[Pos])->Alterar;
        CheckBox3->Checked=dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[Pos])->Eliminar;
       }
     }
    __finally
     {
      Atualizando=false;
     }
}
//---------------------------------------------------------------------------

void __fastcall TCPSenhasTabelas::ListBox1Click(TObject *Sender)
{
    AtualizaGrupo();
}
//---------------------------------------------------------------------------

void __fastcall TCPSenhasTabelas::CheckBox1Click(TObject *Sender)
{
    if(Atualizando==false)
     {
      Alterou=true;
      if(CPSenhas->PHDS1->State!=phInsert)
       CPSenhas->PHDS1->Edit();
     }
}
//---------------------------------------------------------------------------


void __fastcall TCPSenhasTabelas::GroupBox1Exit(TObject *Sender)
{
    // -- Atualiza Dados ------
    if(Alterou==false)
     return;
    if(ListBox1->ItemIndex!=-1)
     {
      int Pos=dynamic_cast<ORDSENTAB*>(ListBox1->Items->Objects[ListBox1->ItemIndex])->Pos;
      dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[Pos])->Incluir=CheckBox1->Checked;
      dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[Pos])->Alterar=CheckBox2->Checked;
      dynamic_cast<TABPER *>(SenUtil.TabelasPermissao->Objects[Pos])->Eliminar=CheckBox3->Checked;
     }
}
//---------------------------------------------------------------------------

void __fastcall TCPSenhasTabelas::PHDS1AfterRead(TObject *Sender)
{
    SenUtil.ConverteAfterRead((struct SENHAS *)PHDS1->Buffer);
}
//---------------------------------------------------------------------------

void __fastcall TCPSenhasTabelas::FormDestroy(TObject *Sender)
{
     for(int a=0;a<ListBox1->Items->Count;a++)
      delete ListBox1->Items->Objects[a];
}
//---------------------------------------------------------------------------


void __fastcall TCPSenhasTabelas::FormCloseQuery(TObject *Sender,
      bool &CanClose)
{
     GroupBox1Exit(Sender);
}
//---------------------------------------------------------------------------

